package org.lanqiao.controller;

import javax.servlet.http.HttpServletRequest;

import org.lanqiao.fdfs.FastDFSHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

/**
 * 
 * @Title: FileController.java
 * @Package org.lanqiao.sshe.controller.auth
 * @Description: springmvc 单文件与多文件上传示例
 * @author 刘伟 15818570028@163.com
 * @date 2016年11月24日 下午6:33:52
 * @version V1.0
 */
@Controller
@RequestMapping(value = "/file")
public class FileController {
	/**
	 * 
	 * @Title: upload
	 * @Description: 上传单个文件到fastdfs
	 * @param request
	 * @param file
	 * @return
	 */
	@RequestMapping(value = "/upload", method = RequestMethod.POST)
	public String upload(HttpServletRequest request,
			@RequestParam(value = "file"/* 重要：这个名字对应前端的要传文件的key */, required = false) MultipartFile file) {
		// 获取文件扩展名
		String file_ext_name = file.getOriginalFilename().split("\\.")[1];
		// 获取文件名
		String file_name = file.getOriginalFilename().split("\\.")[0];
		System.out.println("file_name:" + file_name);
		System.out.println("file_ext_name:" + file_ext_name);
		/* 保存到文件系统 */
		saveToFastdfs(file, file_ext_name);

		return "success";
	}

	/**
	 * 
	 * @Title: upload2
	 * @Description: 表单方式上传多个文件到fastdfs
	 * @param request
	 * @param files
	 * @return
	 */

	@RequestMapping(value = "/multupload", method = RequestMethod.POST)
	public String multupload(HttpServletRequest request,
			@RequestParam(value = "mFile"/* 这个对应前端的名称 */, required = false) MultipartFile[] files) {
		for (MultipartFile file : files) {
			// 获取文件扩展名
			String file_ext_name = file.getOriginalFilename().split("\\.")[1];
			// 获取文件名
			String file_name = file.getOriginalFilename().split("\\.")[0];
			System.out.println("file_name:" + file_name);
			System.out.println("file_ext_name:" + file_ext_name);

			/* 保存到本地 */
			// saveToBenDi(file, file_ext_name, file_name);

			/* 保存到文件系统 */
			saveToFastdfs(file, file_ext_name);
		}

		/* 下面是android上传多文件示例 */
		// OkHttpUtils.post()
		// .addFile("mFile", "trace.txt", file) //增加addFile可以多文件上传
		// .addFile("mFile", "trace1.txt", file1) //增加addFile可以多文件上传
		// .url("http://192.168.1.62:8080/FileUploadDemo/servlet/formservlet")
		// //换成自己的ip地址
		// .build()//
		// .execute(new Callback<File>()
		return "success";

	}

	/**
	 * 
	 * @Title: saveToFastdfs
	 * @Description: 保存到文件系统
	 * @param file
	 * @param file_ext_name
	 */
	private void saveToFastdfs(MultipartFile file, String file_ext_name) {
		try {
			// 上传后返回文件保存的路径
			String upload_file1 = FastDFSHelper.storageClient1.upload_file1(file.getBytes(), file_ext_name, null);
			System.err.println("upload_file1:" + upload_file1);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
